package mybatis.pojo;

import java.io.Serializable;

public class Emp implements Serializable {
    //属性
    private int emp_no;
    private String ename;
    private String password;
    private String job;
    private int salary;
    private int bonus;
    private String hiredate;
    private int deptno;
    private String dname;
    private Dept dept;

    //set和get访问器


    public void setDept(Dept dept) {
        this.dept = dept;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setBonus(int bonus) {
        this.bonus = bonus;
    }

    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

    public void setEmp_no(int emp_no) {
        this.emp_no = emp_no;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public void setHiredate(String hiredate) {
        this.hiredate = hiredate;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getPassword() {
        return password;
    }

    public int getBonus() {
        return bonus;
    }

    public int getDeptno() {
        return deptno;
    }

    public int getEmp_no() {
        return emp_no;
    }

    public int getSalary() {
        return salary;
    }

    public String getEname() {
        return ename;
    }

    public String getHiredate() {
        return hiredate;
    }

    public String getJob() {
        return job;
    }

    public String getDname() {
        return dname;
    }

    public Dept getDept() {
        return dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "emp_no=" + emp_no +
                ", ename='" + ename + '\'' +
                ", password='" + password + '\'' +
                ", job='" + job + '\'' +
                ", salary=" + salary +
                ", bonus=" + bonus +
                ", hiredate='" + hiredate + '\'' +
                ", deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", dept=" + dept +
                '}';
    }

    //构造方法
    public Emp(int emp_no, String ename, String password, String job, int salary, int bonus, String hiredate, int deptno){
        setEmp_no(emp_no);
        setEname(ename);
        setDeptno(deptno);
        setHiredate(hiredate);
        setJob(job);
        setPassword(password);
        setSalary(salary);
        setBonus(bonus);
    }
    public Emp(String ename, String password, String job, int salary, int bonus, String hiredate, int deptno){
        setEname(ename);
        setDeptno(deptno);
        setHiredate(hiredate);
        setJob(job);
        setPassword(password);
        setSalary(salary);
        setBonus(bonus);
    }
    public Emp(int emp_no,String ename,String job,Dept dept){
        setEmp_no(emp_no);
        setEname(ename);
        setJob(job);
        setDept(dept);
    }
    public Emp(int emp_no,String ename,String job){
        setJob(job);
        setEmp_no(emp_no);
        setEname(ename);
    }

    //    Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class mybatis.pojo.Emp with invalid types () or values (). Cause: java.lang.NoSuchMethodException: mybatis.pojo.Emp.<init>()
//    这是一个由MyBatis框架抛出的反射异常。MyBatis在处理映射文件中的定义时，试图通过反射来实例化一个类，但失败了。
//    可能的原因和解决方法：
//    类路径问题：确保MyBatis的映射文件中指定的类名是完整的，并且该类在应用的classpath中可以被找到。
//    构造函数问题：确保目标类有一个无参构造函数，因为MyBatis会尝试使用这个构造函数来创建实例。
//    权限问题：检查目标类及其构造函数是否为public，确保MyBatis可以访问它们。
//    依赖问题：如果目标类依赖于其他类，确保这些依赖能够被正确解析和注入。
//    版本冲突：确保MyBatis的版本与项目中使用的其他库版本兼容。
//    配置问题：检查MyBatis的配置文件，确保所有的类型别名和类路径都已正确配置。
    public Emp(){}

}
